『ゼロから作るDeep Learning ② 自然言語処理編』
https://gyazo.com/a2b3bb4795c1ab19282a45a5a126c40d
2018/7/21
手に取った動機
最近はGPTが話題だが、自然言語処理の基礎がわからないので軽く読む
BERTの登場前後でノリが結構違うと思うけど軽く知っておきたい
せめて、基礎的な語彙の理解をしておきたい
この本特有の単語
コンテキストとウィンドウサイズ
p.68
1章 ニューラルネットワークの復習
かなり良い感じにNNの概要がまとまっているmrsekut.icon
1.3 ニューラルネットワークの学習
1.3.2 微分と勾配
1.3.3 チェインルール
1.3.4 計算グラフ
1.3.5 勾配の導出と逆伝播の実装
1.3.6 重みの更新
1.4 ニューラルネットワークで問題を解く
1.4.1 スパイラル・データセット
1.4.2 ニューラルネットワークの実装
1.4.3 学習用のソースコード
1.4.4 Trainerクラス
1.5 計算の高速化
1.5.1 ビット精度
1.5.2 GPU(CuPy)
1.6 まとめ
2章 自然言語と単語の分散表現
単語の意味を表現方法
2.4.5 PTBデータセットでの評価
2.5 まとめ
3章 word2vec
ミニバッチで学習する
文章の中の虫食いに、どういう単語を入れるべきかを求める
確率分布を見て、最も確率の高い単語を返答する
3.3 学習データの準備
3.3.1 コンテキストとターゲット
3.4 CBOWモデルの実装
3.4.1 学習コードの実装
3.5 word2vecに関する補足
3.5.1 CBOWモデルと確率
3.5.3 カウントベース v.s. 推論ベース
3.6 まとめ
4章 word2vecの高速化
4.1 word2vecの改良①
4.1.1 Embeddingレイヤ
4.1.2 Embeddingレイヤの実装
4.2 word2vecの改良②
4.2.1 中間層以降の計算の問題点
4.2.2 多値分類から二値分類へ
4.2.4 多値分類から二値分類へ(実装編)
4.2.6 Negative Samplingのサンプリング手法
4.2.7 Negative Samplingの実装
4.3 改良版word2vecの学習
4.3.1 CBOWモデルの実装
4.3.2 CBOWモデルの学習コード
4.3.3 CBOWモデルの評価
4.4 word2vecに関する残りのテーマ
4.4.1 word2vecを使ったアプリケーションの例
4.4.2 単語ベクトルの評価方法
4.5 まとめ
5章 リカレントニューラルネットワーク(RNN)
5.1 確率と言語モデル
5.1.1 word2vecを確率の視点から眺める
5.1.2 言語モデル
5.1.3 CBOWモデルを言語モデルに?
5.2 RNNとは
5.2.1 循環するニューラルネットワーク
5.2.2 ループの展開
5.2.5 Truncated BPTTのミニバッチ学習
5.3 RNNの実装
5.4 時系列データを扱うレイヤの実装
5.4.1 RNNLMの全体図
5.4.2 Timeレイヤの実装
5.5 RNNLMの学習と評価
5.5.2 言語モデルの評価
5.5.3 RNNLMの学習コード
5.5.4 RNNLMのTrainerクラス
5.6 まとめ
6章 ゲート付きRNN
6.1 RNNの問題点
6.1.1 RNNの復習
6.1.2 勾配消失もしくは勾配爆発
6.1.3 勾配消失もしくは勾配爆発の原因
6.1.4 勾配爆発への対策
6.2.1 LSTMのインタフェース
6.2.2 LSTMレイヤの組み立て
6.2.3 outputゲート
6.2.4 forgetゲート
6.2.5 新しい記憶セル
6.2.6 inputゲート
6.2.7 LSTMの勾配の流れ
6.3 LSTMの実装
6.4 LSTMを使った言語モデル
6.5 RNNLMのさらなる改善
6.5.1 LSTMレイヤの多層化
6.5.2 Dropoutによる過学習の抑制
6.5.3 重み共有
6.5.4 より良いRNNLMの実装
6.5.5 最先端の研究へ
6.6 まとめ
7章 RNNによる文章生成
7.1 言語モデルを使った文章生成
7.1.1 RNNによる文章生成の手順
7.1.2 文章生成の実装
7.1.3 さらに良い文章へ
7.2 seq2seq
7.2.2 時系列データ変換用のトイ・プロブレム
7.2.3 可変長の時系列データ
7.2.4 足し算データセット
7.3 seq2seqの実装
7.3.1 Encoderクラス
7.3.2 Decoderクラス
7.3.3 Seq2seqクラス
7.3.4 seq2seqの評価
7.4 seq2seqの改良
7.4.1 入力データの反転(Reverse)
7.4.2 覗き見(Peeky)
7.5 seq2seqを用いたアプリケーション
7.5.2 アルゴリズムの学習
7.5.3 イメージキャプション
7.6 まとめ
8.1 Attentionの仕組み
8.1.1 seq2seqの問題点
8.1.2 Encoderの改良
8.1.3 Decoderの改良①
8.1.4 Decoderの改良②
8.1.5 Decoderの改良③
8.2 Attention付きseq2seqの実装
8.2.1 Encoderの実装
8.2.2 Decoderの実装
8.2.3 seq2seqの実装
8.3 Attentionの評価
8.3.1 日付フォーマットの変換問題
8.3.2 Attention付きseq2seqの学習
8.3.3 Attentionの可視化
8.4 Attentionに関する残りのテーマ
8.4.1 双方向RNN
8.4.2 Attentionレイヤの使用方法
8.4.3 seq2seqの深層化とskipコネクション
8.5 Attentionの応用
8.5.1 Google Neural Machine Translation(GNMT)
8.5.2 Transformer
8.5.3 Neural Turing Machine(NTM)
8.6 まとめ
付録A sigmoid関数とtanh関数の微分
A.3 まとめ
付録B WordNetを動かす
B.1 NLTKのインストール
B.2 WordNetで同義語を得る
B.3 WordNetと単語ネットワーク
B.4 WordNetによる意味の類似度
付録C GRU
C.1 GRUのインタフェース
C.2 GRUの計算グラフ
おわりに
参考文献
索引